Cloud computing has emerged as a preferred technology for providing computing services. Cloud computing utilizes datacenters include hardware such as processor-based servers that serve as hosts to deliver computing resources as a service, rather than as a product. Users access computer resources such as a central processing unit, memory, storage, etc. by requesting services from the cloud computing system. This permits users to access computer resources without having to purchase and provision the appropriate hardware and software to provide the computing services. End users may access cloud-based services such as virtual machines or applications using client devices such as mobile devices, laptops, desktops, etc.
Modern cloud computing datacenters utilize many technologies to flexibly provide robust computing services to many users. Cloud computing often uses shared resources over one or more networks to provide shared services. Virtualization technologies, for example, permit physical computing resources such as processors, memory, and storage, etc. to be virtualized and divided to provide multiple instances of services from the datacenter. These architectures may be referred to as multi-tenancy cloud architectures where the datacenter provides services to multiple tenants.
Provisioning resources in large-scale datacenters has always been a challenge, particularly in multi-tenancy cloud architectures. The resources allocated to each tenant are to be isolated from all other tenants, even when the resources are located within the same computing device, such as the same physical server. At the same time, multiple instances provisioned for the same tenant are to be interconnected as if located in the same subnet.